package common

import "github.com/golang/protobuf/proto"

type CloseType int

var (
	CloseType_UpLayer    CloseType = 0 //上层主动
	CloseType_UnderLayer CloseType = 1 //下层主动
)

type ISession interface {
	// 绑定用户句柄
	BindUserItem(interface{})
	// 获取用户句柄
	GetBindUserItem() interface{}
	// 发包
	Send(uint16, uint16, []byte) error
	// 发送pb消息
	SendPbMessage(mainId uint16, subId uint16, pb proto.Message) error
	// 发送gob消息
	SendGobMessage(mainId uint16, subId uint16, e interface{}) error
	// 收包，为了机器人
	Recv(uint16, uint16, []byte) bool
	// 断开
	Close(CloseType)
	// 标示ID
	ID() uint64
	//设置用户数据
	SetBindData(interface{})
	//获取到用户数据
	GetBindData() interface{}
	//获取ip地址
	GetRemoteAddr() string
}